package com.bfxy.rabbitmq.quickstart;

import com.rabbitmq.client.*;

/**
 * Created by deng_wb on 2020/3/9
 */
@SuppressWarnings("all")
public class Consumer  {
    public static void main(String[] args) throws Exception{
        // 1. 创建一个ConnectionFactory,并进行配置
        ConnectionFactory connectionFactory = new ConnectionFactory();

        connectionFactory.setHost("192.168.58.58");
        connectionFactory.setPort(5672);
        connectionFactory.setVirtualHost("/");

        // 2. 通过连接工厂创建连接
        Connection connection = connectionFactory.newConnection();

        // 3. 通过connection创建一个Channel
        Channel channel = connection.createChannel();

        // 4. 声明 (创建) 一个队列
        String queueName = "test001";
        channel.queueDeclare(queueName,true,false,false,null);

        // 5. 创建消费者
        QueueingConsumer queueingConsumer = new QueueingConsumer(channel);

        // 6. 设置Channel
        channel.basicConsume(queueName,true,queueingConsumer);

        // 7. 获取消息

        while (true){
            QueueingConsumer.Delivery delivery = queueingConsumer.nextDelivery();
            String msg = new String(delivery.getBody());

            Envelope envelope = delivery.getEnvelope();
            // 手动签收( ACK )时使用
            long deliveryTag = envelope.getDeliveryTag();
            System.out.println("消费端: "+msg+" and deliveryTag is: "+deliveryTag);
        }

    }
}
